import pandas as pd
from prophet import Prophet
import os
import plotly.graph_objects as go
os.chdir("/Users/abyvelazquez/Developer/Repos/DS_Projects/Criminalidad/data/")
data_set = pd.read_csv("data_preparation.csv")
data_set.head()
| idCarpeta | Delito | riesgo_delito | Sexo | Edad | rango_edad | TipoPersona | CalidadJuridica | Mes_hecho | FechaHecho | Dias_transcurridos | count_semanas | HoraHecho | HoraInicio | poblacion_alcaldia | alcaldia_hechos | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 8324429.0 | FRAUDE | 5 | Masculino | 62.0 | Adultos mayores | FISICA | OFENDIDO | Agosto | 29/08/2018 | 128 | 974 | 12:00 | 12:19 | 759137 | ALVARO OBREGON |
| 1 | 8324430.0 | PRODUCCIÓN, IMPRESIÓN, ENAJENACIÓN, DISTRIBUCI... | 8 | Femenino | 38.0 | Adultos jóvenes | FISICA | VICTIMA Y DENUNCIANTE | Diciembre | 15/12/2018 | 20 | 990 | 15:00 | 12:20 | 432205 | AZCAPOTZALCO |
| 2 | 8324431.0 | ROBO A TRANSEUNTE SALIENDO DEL BANCO CON VIOLE... | 10 | Masculino | 42.0 | Adultos de mediana edad | FISICA | VICTIMA Y DENUNCIANTE | Diciembre | 22/12/2018 | 13 | 991 | 15:30 | 12:23 | 614447 | COYOACAN |
| 3 | 8324435.0 | ROBO DE VEHICULO DE SERVICIO PARTICULAR SIN VI... | 3 | Masculino | 35.0 | Adultos jóvenes | FISICA | VICTIMA Y DENUNCIANTE | Enero | 04/01/2019 | 0 | 992 | 06:00 | 12:27 | 404695 | IZTACALCO |
| 4 | 8324438.0 | ROBO DE MOTOCICLETA SIN VIOLENCIA | 3 | Masculino | 39.0 | Adultos jóvenes | FISICA | VICTIMA | Enero | 03/01/2019 | 1 | 992 | 20:00 | 12:35 | 1835486 | IZTAPALAPA |
data_set.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 961666 entries, 0 to 961665 Data columns (total 16 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 idCarpeta 961666 non-null float64 1 Delito 961666 non-null object 2 riesgo_delito 961666 non-null int64 3 Sexo 961666 non-null object 4 Edad 961666 non-null float64 5 rango_edad 961666 non-null object 6 TipoPersona 961666 non-null object 7 CalidadJuridica 961666 non-null object 8 Mes_hecho 961666 non-null object 9 FechaHecho 961666 non-null object 10 Dias_transcurridos 961666 non-null int64 11 count_semanas 961666 non-null int64 12 HoraHecho 961666 non-null object 13 HoraInicio 961666 non-null object 14 poblacion_alcaldia 961666 non-null int64 15 alcaldia_hechos 961666 non-null object dtypes: float64(2), int64(4), object(10) memory usage: 117.4+ MB
data_set[["FechaHecho"]] = data_set[["FechaHecho"]].apply(pd.to_datetime)
/var/folders/30/qpjmvdzs0ng9dh1bzzwc7brh0000gn/T/ipykernel_79014/1220358193.py:1: UserWarning: Parsing dates in DD/MM/YYYY format when dayfirst=False (the default) was specified. This may lead to inconsistently parsed dates! Specify a format to ensure consistent parsing. data_set[["FechaHecho"]] = data_set[["FechaHecho"]].apply(pd.to_datetime)
fecha_delitos = data_set.groupby(data_set['FechaHecho'].dt.date).size().reset_index(name='Conteo')
# tambien limitamos la fecha delitos a los anios 2019, 2020, 2021, y 2022
fecha_delitos["FechaHecho"] = fecha_delitos["FechaHecho"].astype("datetime64")
fecha_delitos = fecha_delitos.loc[(fecha_delitos['FechaHecho'] >= '2019-01-01')]
data_set.loc[data_set['FechaHecho'] == "2022-12-27"].count()
idCarpeta 405 Delito 405 riesgo_delito 405 Sexo 405 Edad 405 rango_edad 405 TipoPersona 405 CalidadJuridica 405 Mes_hecho 405 FechaHecho 405 Dias_transcurridos 405 count_semanas 405 HoraHecho 405 HoraInicio 405 poblacion_alcaldia 405 alcaldia_hechos 405 dtype: int64
fecha_delitos.tail()
| FechaHecho | Conteo | |
|---|---|---|
| 4836 | 2022-12-27 | 405 |
| 4837 | 2022-12-28 | 384 |
| 4838 | 2022-12-29 | 340 |
| 4839 | 2022-12-30 | 261 |
| 4840 | 2022-12-31 | 132 |
Con esto comprobamos que si esta agrupando de manera correcta, con 405 delitos cometidos en diciembre del 2022
fecha_delitos_alcaldias = data_set.groupby([data_set['FechaHecho'].dt.date, "alcaldia_hechos"]).size().reset_index(name='Conteo')
fecha_delitos_alcaldias
| FechaHecho | alcaldia_hechos | Conteo | |
|---|---|---|---|
| 0 | 2000-01-01 | CUAUHTEMOC | 4 |
| 1 | 2000-01-01 | GUSTAVO A. MADERO | 1 |
| 2 | 2000-01-01 | IZTACALCO | 1 |
| 3 | 2000-01-01 | IZTAPALAPA | 2 |
| 4 | 2000-01-01 | XOCHIMILCO | 1 |
| ... | ... | ... | ... |
| 34037 | 2022-12-31 | MILPA ALTA | 1 |
| 34038 | 2022-12-31 | TLAHUAC | 3 |
| 34039 | 2022-12-31 | TLALPAN | 2 |
| 34040 | 2022-12-31 | VENUSTIANO CARRANZA | 9 |
| 34041 | 2022-12-31 | XOCHIMILCO | 2 |
34042 rows × 3 columns
Como tenemos delitos cometidos desde el 2001, para los modelos predictivos y que tomen en cuenta los ciclos por año necesita, vemos un histograma de el numero de delitos por año, y vemos que existe un valor similar en el 2019, 2020, 2021, 2022, por lo que puede considerar los ultimos 4 años para predecir el futuro es una buena estrategia.
fecha_delitos_alcaldias["FechaHecho"] = fecha_delitos_alcaldias["FechaHecho"].astype("datetime64")
fecha_delitos_alcaldias.groupby(fecha_delitos_alcaldias["FechaHecho"].dt.year).count().plot(kind="bar")
<Axes: xlabel='FechaHecho'>
fecha_delitos_alcaldias = fecha_delitos_alcaldias.loc[(fecha_delitos_alcaldias['FechaHecho'] >= '2019-01-01')]
print(fecha_delitos_alcaldias["alcaldia_hechos"].unique())
['ALVARO OBREGON' 'AZCAPOTZALCO' 'BENITO JUAREZ' 'COYOACAN' 'CUAJIMALPA DE MORELOS' 'CUAUHTEMOC' 'GUSTAVO A. MADERO' 'IZTACALCO' 'IZTAPALAPA' 'LA MAGDALENA CONTRERAS' 'MIGUEL HIDALGO' 'MILPA ALTA' 'TLAHUAC' 'TLALPAN' 'VENUSTIANO CARRANZA' 'XOCHIMILCO']
Haremos un modelo con prophet para cada alcaldia, para si evaluar diferentes patrones en los datos y ver una estimacion de delitos por alcaldia
fecha_delitos_alvaro_obregon = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] == "ALVARO OBREGON"]
fecha_delitos_alvaro_obregon=fecha_delitos_alvaro_obregon.drop('alcaldia_hechos', axis=1)
fecha_delitos_alvaro_obregon.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_alvaro_obregon.head()
| ds | y | |
|---|---|---|
| 10673 | 2019-01-01 | 56 |
| 10689 | 2019-01-02 | 79 |
| 10705 | 2019-01-03 | 45 |
| 10721 | 2019-01-04 | 61 |
| 10737 | 2019-01-05 | 59 |
m_alvaro_obregon = Prophet()
m_alvaro_obregon.fit(fecha_delitos_alvaro_obregon)
14:58:03 - cmdstanpy - INFO - Chain [1] start processing 14:58:03 - cmdstanpy - INFO - Chain [1] done processing
<prophet.forecaster.Prophet at 0x7fc57588f6d0>
# Hacemos un dataframe de fechas futuras
future_alvaro_obregon = m_alvaro_obregon.make_future_dataframe(periods=365)
future_alvaro_obregon.tail()
| ds | |
|---|---|
| 1821 | 2023-12-27 |
| 1822 | 2023-12-28 |
| 1823 | 2023-12-29 |
| 1824 | 2023-12-30 |
| 1825 | 2023-12-31 |
forecast_alvaro_obregon = m_alvaro_obregon.predict(future_alvaro_obregon)
forecast_alvaro_obregon[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
| ds | yhat | yhat_lower | yhat_upper | |
|---|---|---|---|---|
| 1821 | 2023-12-27 | 31.370305 | 19.995359 | 43.637594 |
| 1822 | 2023-12-28 | 31.825898 | 19.890772 | 44.794091 |
| 1823 | 2023-12-29 | 33.764017 | 22.866689 | 45.338303 |
| 1824 | 2023-12-30 | 30.212814 | 17.505819 | 42.190659 |
| 1825 | 2023-12-31 | 30.070744 | 17.234023 | 42.404025 |
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_alvaro_obregon, forecast_alvaro_obregon)
plot_components_plotly(m_alvaro_obregon, forecast_alvaro_obregon)
fecha_delitos_azcapotzalco = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
"AZCAPOTZALCO"]
fecha_delitos_azcapotzalco=fecha_delitos_azcapotzalco.drop('alcaldia_hechos', axis=1)
fecha_delitos_azcapotzalco.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_azcapotzalco.head()
| ds | y | |
|---|---|---|
| 10674 | 2019-01-01 | 29 |
| 10690 | 2019-01-02 | 52 |
| 10706 | 2019-01-03 | 36 |
| 10722 | 2019-01-04 | 44 |
| 10738 | 2019-01-05 | 34 |
m_azcapotzalco = Prophet()
m_azcapotzalco.fit(fecha_delitos_azcapotzalco)
14:58:05 - cmdstanpy - INFO - Chain [1] start processing 14:58:05 - cmdstanpy - INFO - Chain [1] done processing
<prophet.forecaster.Prophet at 0x7fc57048fb20>
# Hacemos un dataframe de fechas futuras
future_azcapotzalco = m_azcapotzalco.make_future_dataframe(periods=365)
future_azcapotzalco.tail()
| ds | |
|---|---|
| 1821 | 2023-12-27 |
| 1822 | 2023-12-28 |
| 1823 | 2023-12-29 |
| 1824 | 2023-12-30 |
| 1825 | 2023-12-31 |
forecast_azcapotzalco = m_azcapotzalco.predict(future_azcapotzalco)
forecast_azcapotzalco[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
| ds | yhat | yhat_lower | yhat_upper | |
|---|---|---|---|---|
| 1821 | 2023-12-27 | 26.471974 | 16.731240 | 35.822041 |
| 1822 | 2023-12-28 | 26.330372 | 17.336206 | 36.390479 |
| 1823 | 2023-12-29 | 27.538392 | 18.520059 | 36.665571 |
| 1824 | 2023-12-30 | 24.942665 | 16.105692 | 34.277417 |
| 1825 | 2023-12-31 | 24.503692 | 15.292994 | 33.887323 |
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_azcapotzalco, forecast_azcapotzalco)
plot_components_plotly(m_azcapotzalco, forecast_azcapotzalco)
fecha_delitos_benito_juarez = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
"BENITO JUAREZ"]
fecha_delitos_benito_juarez=fecha_delitos_benito_juarez.drop('alcaldia_hechos', axis=1)
fecha_delitos_benito_juarez.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_benito_juarez.head()
| ds | y | |
|---|---|---|
| 10675 | 2019-01-01 | 36 |
| 10691 | 2019-01-02 | 87 |
| 10707 | 2019-01-03 | 77 |
| 10723 | 2019-01-04 | 89 |
| 10739 | 2019-01-05 | 86 |
m_benito_juarez = Prophet()
m_benito_juarez.fit(fecha_delitos_benito_juarez)
14:58:06 - cmdstanpy - INFO - Chain [1] start processing 14:58:06 - cmdstanpy - INFO - Chain [1] done processing
<prophet.forecaster.Prophet at 0x7fc5704edc00>
# Hacemos un dataframe de fechas futuras
future_benito_juarez = m_benito_juarez.make_future_dataframe(periods=365)
future_benito_juarez.tail()
| ds | |
|---|---|
| 1821 | 2023-12-27 |
| 1822 | 2023-12-28 |
| 1823 | 2023-12-29 |
| 1824 | 2023-12-30 |
| 1825 | 2023-12-31 |
forecast_benito_juarez = m_benito_juarez.predict(future_benito_juarez)
forecast_benito_juarez[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
| ds | yhat | yhat_lower | yhat_upper | |
|---|---|---|---|---|
| 1821 | 2023-12-27 | 32.546187 | 15.793759 | 48.350933 |
| 1822 | 2023-12-28 | 33.729427 | 17.395896 | 48.166004 |
| 1823 | 2023-12-29 | 35.816093 | 19.823229 | 51.699352 |
| 1824 | 2023-12-30 | 26.537661 | 10.487190 | 42.445270 |
| 1825 | 2023-12-31 | 24.091896 | 8.716281 | 40.179067 |
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_benito_juarez, forecast_benito_juarez)
plot_components_plotly(m_benito_juarez, forecast_benito_juarez)
fecha_delitos_coyoacan = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
"COYOACAN"]
fecha_delitos_coyoacan=fecha_delitos_coyoacan.drop('alcaldia_hechos', axis=1)
fecha_delitos_coyoacan.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_coyoacan.head()
| ds | y | |
|---|---|---|
| 10676 | 2019-01-01 | 35 |
| 10692 | 2019-01-02 | 60 |
| 10708 | 2019-01-03 | 55 |
| 10724 | 2019-01-04 | 48 |
| 10740 | 2019-01-05 | 45 |
m_coyoacan = Prophet()
m_coyoacan.fit(fecha_delitos_coyoacan)
14:58:08 - cmdstanpy - INFO - Chain [1] start processing 14:58:08 - cmdstanpy - INFO - Chain [1] done processing
<prophet.forecaster.Prophet at 0x7fc573aff0a0>
# Hacemos un dataframe de fechas futuras
future_coyoacan = m_coyoacan.make_future_dataframe(periods=365)
future_coyoacan.tail()
| ds | |
|---|---|
| 1821 | 2023-12-27 |
| 1822 | 2023-12-28 |
| 1823 | 2023-12-29 |
| 1824 | 2023-12-30 |
| 1825 | 2023-12-31 |
forecast_coyoacan = m_coyoacan.predict(future_coyoacan)
forecast_coyoacan[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
| ds | yhat | yhat_lower | yhat_upper | |
|---|---|---|---|---|
| 1821 | 2023-12-27 | 43.698918 | 31.943135 | 56.352023 |
| 1822 | 2023-12-28 | 44.621119 | 32.315258 | 56.400635 |
| 1823 | 2023-12-29 | 46.417913 | 34.437141 | 58.565434 |
| 1824 | 2023-12-30 | 43.319657 | 30.873287 | 56.121486 |
| 1825 | 2023-12-31 | 42.109696 | 31.367328 | 53.750620 |
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_coyoacan, forecast_coyoacan)
plot_components_plotly(m_coyoacan, forecast_coyoacan)
fecha_delitos_cuajimalpa = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
"CUAJIMALPA DE MORELOS"]
fecha_delitos_cuajimalpa=fecha_delitos_cuajimalpa.drop('alcaldia_hechos', axis=1)
fecha_delitos_cuajimalpa.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_cuajimalpa.head()
| ds | y | |
|---|---|---|
| 10677 | 2019-01-01 | 12 |
| 10693 | 2019-01-02 | 10 |
| 10709 | 2019-01-03 | 22 |
| 10725 | 2019-01-04 | 18 |
| 10741 | 2019-01-05 | 11 |
m_cuajimalpa = Prophet()
m_cuajimalpa.fit(fecha_delitos_cuajimalpa)
14:58:09 - cmdstanpy - INFO - Chain [1] start processing 14:58:09 - cmdstanpy - INFO - Chain [1] done processing
<prophet.forecaster.Prophet at 0x7fc57313eb30>
# Hacemos un dataframe de fechas futuras
future_cuajimalpa = m_cuajimalpa.make_future_dataframe(periods=365)
future_cuajimalpa.tail()
| ds | |
|---|---|
| 1821 | 2023-12-27 |
| 1822 | 2023-12-28 |
| 1823 | 2023-12-29 |
| 1824 | 2023-12-30 |
| 1825 | 2023-12-31 |
forecast_cuajimalpa = m_cuajimalpa.predict(future_cuajimalpa)
forecast_cuajimalpa[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
| ds | yhat | yhat_lower | yhat_upper | |
|---|---|---|---|---|
| 1821 | 2023-12-27 | 9.506952 | 4.778598 | 14.813901 |
| 1822 | 2023-12-28 | 9.743674 | 4.587666 | 14.732781 |
| 1823 | 2023-12-29 | 10.536640 | 5.521917 | 15.378466 |
| 1824 | 2023-12-30 | 9.910433 | 4.980413 | 14.780431 |
| 1825 | 2023-12-31 | 9.983487 | 4.871072 | 14.706486 |
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_cuajimalpa, forecast_cuajimalpa)
plot_components_plotly(m_cuajimalpa, forecast_cuajimalpa)
fecha_delitos_cuauhtemoc = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
"CUAUHTEMOC"]
fecha_delitos_cuauhtemoc=fecha_delitos_cuauhtemoc.drop('alcaldia_hechos', axis=1)
fecha_delitos_cuauhtemoc.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_cuauhtemoc.head()
| ds | y | |
|---|---|---|
| 10678 | 2019-01-01 | 113 |
| 10694 | 2019-01-02 | 148 |
| 10710 | 2019-01-03 | 168 |
| 10726 | 2019-01-04 | 167 |
| 10742 | 2019-01-05 | 117 |
m_cuauhtemoc = Prophet()
m_cuauhtemoc.fit(fecha_delitos_cuauhtemoc)
14:58:10 - cmdstanpy - INFO - Chain [1] start processing 14:58:10 - cmdstanpy - INFO - Chain [1] done processing
<prophet.forecaster.Prophet at 0x7fc5737b3ca0>
# Hacemos un dataframe de fechas futuras
future_cuauhtemoc = m_cuauhtemoc.make_future_dataframe(periods=365)
future_cuauhtemoc.tail()
| ds | |
|---|---|
| 1821 | 2023-12-27 |
| 1822 | 2023-12-28 |
| 1823 | 2023-12-29 |
| 1824 | 2023-12-30 |
| 1825 | 2023-12-31 |
forecast_cuauhtemoc = m_cuauhtemoc.predict(future_cuauhtemoc)
forecast_cuauhtemoc[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
| ds | yhat | yhat_lower | yhat_upper | |
|---|---|---|---|---|
| 1821 | 2023-12-27 | 78.160737 | 48.436915 | 106.160651 |
| 1822 | 2023-12-28 | 81.332379 | 50.783095 | 111.656266 |
| 1823 | 2023-12-29 | 84.511358 | 54.432845 | 113.002878 |
| 1824 | 2023-12-30 | 69.425334 | 40.965955 | 100.117928 |
| 1825 | 2023-12-31 | 61.524175 | 32.917338 | 88.702394 |
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_cuauhtemoc, forecast_cuauhtemoc)
plot_components_plotly(m_cuauhtemoc, forecast_cuauhtemoc)
fecha_delitos_gustavo_madero = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
"GUSTAVO A. MADERO"]
fecha_delitos_gustavo_madero=fecha_delitos_gustavo_madero.drop('alcaldia_hechos', axis=1)
fecha_delitos_gustavo_madero.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_gustavo_madero.head()
| ds | y | |
|---|---|---|
| 10679 | 2019-01-01 | 63 |
| 10695 | 2019-01-02 | 69 |
| 10711 | 2019-01-03 | 108 |
| 10727 | 2019-01-04 | 114 |
| 10743 | 2019-01-05 | 85 |
m_gustavo_madero = Prophet()
m_gustavo_madero.fit(fecha_delitos_gustavo_madero)
14:58:11 - cmdstanpy - INFO - Chain [1] start processing 14:58:12 - cmdstanpy - INFO - Chain [1] done processing
<prophet.forecaster.Prophet at 0x7fc573de7dc0>
# Hacemos un dataframe de fechas futuras
future_gustavo_madero = m_gustavo_madero.make_future_dataframe(periods=365)
future_gustavo_madero.tail()
| ds | |
|---|---|
| 1821 | 2023-12-27 |
| 1822 | 2023-12-28 |
| 1823 | 2023-12-29 |
| 1824 | 2023-12-30 |
| 1825 | 2023-12-31 |
forecast_gustavo_madero = m_gustavo_madero.predict(future_gustavo_madero)
forecast_gustavo_madero[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
| ds | yhat | yhat_lower | yhat_upper | |
|---|---|---|---|---|
| 1821 | 2023-12-27 | 50.291246 | 34.568281 | 65.965932 |
| 1822 | 2023-12-28 | 50.367989 | 34.165231 | 65.517699 |
| 1823 | 2023-12-29 | 52.378582 | 37.937520 | 67.496167 |
| 1824 | 2023-12-30 | 48.104427 | 31.962576 | 62.117204 |
| 1825 | 2023-12-31 | 48.280858 | 32.450352 | 61.997174 |
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_gustavo_madero, forecast_gustavo_madero)
plot_components_plotly(m_gustavo_madero, forecast_gustavo_madero)
fecha_delitos_iztacalco = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
"IZTACALCO"]
fecha_delitos_iztacalco=fecha_delitos_iztacalco.drop('alcaldia_hechos', axis=1)
fecha_delitos_iztacalco.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_iztacalco.head()
| ds | y | |
|---|---|---|
| 10680 | 2019-01-01 | 36 |
| 10696 | 2019-01-02 | 48 |
| 10712 | 2019-01-03 | 50 |
| 10728 | 2019-01-04 | 45 |
| 10744 | 2019-01-05 | 25 |
m_iztacalco = Prophet()
m_iztacalco.fit(fecha_delitos_iztacalco)
14:58:13 - cmdstanpy - INFO - Chain [1] start processing 14:58:13 - cmdstanpy - INFO - Chain [1] done processing
<prophet.forecaster.Prophet at 0x7fc57402c940>
# Hacemos un dataframe de fechas futuras
future_iztacalco = m_iztacalco.make_future_dataframe(periods=365)
future_iztacalco.tail()
| ds | |
|---|---|
| 1821 | 2023-12-27 |
| 1822 | 2023-12-28 |
| 1823 | 2023-12-29 |
| 1824 | 2023-12-30 |
| 1825 | 2023-12-31 |
forecast_iztacalco = m_iztacalco.predict(future_iztacalco)
forecast_iztacalco[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
| ds | yhat | yhat_lower | yhat_upper | |
|---|---|---|---|---|
| 1821 | 2023-12-27 | 30.654362 | 21.387476 | 40.884392 |
| 1822 | 2023-12-28 | 30.768562 | 21.824086 | 40.409137 |
| 1823 | 2023-12-29 | 32.335173 | 23.040101 | 42.181306 |
| 1824 | 2023-12-30 | 31.158735 | 21.082293 | 40.432892 |
| 1825 | 2023-12-31 | 30.231890 | 20.648863 | 39.219908 |
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_iztacalco, forecast_iztacalco)
plot_components_plotly(m_iztacalco, forecast_iztacalco)
fecha_delitos_iztapalapa = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
"IZTAPALAPA"]
fecha_delitos_iztapalapa=fecha_delitos_iztapalapa.drop('alcaldia_hechos', axis=1)
fecha_delitos_iztapalapa.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_iztapalapa.head()
| ds | y | |
|---|---|---|
| 10681 | 2019-01-01 | 116 |
| 10697 | 2019-01-02 | 141 |
| 10713 | 2019-01-03 | 134 |
| 10729 | 2019-01-04 | 159 |
| 10745 | 2019-01-05 | 162 |
m_iztapalapa = Prophet()
m_iztapalapa.fit(fecha_delitos_iztapalapa)
15:02:39 - cmdstanpy - INFO - Chain [1] start processing 15:02:39 - cmdstanpy - INFO - Chain [1] done processing
<prophet.forecaster.Prophet at 0x7fc573aff460>
# Hacemos un dataframe de fechas futuras
future_iztapalapa = m_iztapalapa.make_future_dataframe(periods=365)
future_iztapalapa.tail()
| ds | |
|---|---|
| 1821 | 2023-12-27 |
| 1822 | 2023-12-28 |
| 1823 | 2023-12-29 |
| 1824 | 2023-12-30 |
| 1825 | 2023-12-31 |
forecast_iztapalapa = m_iztapalapa.predict(future_iztapalapa)
forecast_iztapalapa[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
| ds | yhat | yhat_lower | yhat_upper | |
|---|---|---|---|---|
| 1821 | 2023-12-27 | 71.347128 | 50.626235 | 95.183273 |
| 1822 | 2023-12-28 | 71.246254 | 49.307810 | 93.058767 |
| 1823 | 2023-12-29 | 72.620833 | 52.010792 | 92.895094 |
| 1824 | 2023-12-30 | 70.056112 | 50.001403 | 90.446341 |
| 1825 | 2023-12-31 | 68.108433 | 46.689467 | 88.164449 |
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_iztapalapa, forecast_iztapalapa)
plot_components_plotly(m_iztapalapa, forecast_iztapalapa)
fecha_delitos_magdalena = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
"LA MAGDALENA CONTRERAS"]
fecha_delitos_magdalena=fecha_delitos_magdalena.drop('alcaldia_hechos', axis=1)
fecha_delitos_magdalena.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_magdalena.head()
| ds | y | |
|---|---|---|
| 10682 | 2019-01-01 | 12 |
| 10698 | 2019-01-02 | 13 |
| 10714 | 2019-01-03 | 12 |
| 10730 | 2019-01-04 | 18 |
| 10746 | 2019-01-05 | 11 |
m_magdalena = Prophet()
m_magdalena.fit(fecha_delitos_magdalena)
15:06:08 - cmdstanpy - INFO - Chain [1] start processing 15:06:09 - cmdstanpy - INFO - Chain [1] done processing
<prophet.forecaster.Prophet at 0x7fc582027040>
# Hacemos un dataframe de fechas futuras
future_magdalena = m_magdalena.make_future_dataframe(periods=365)
future_magdalena.tail()
| ds | |
|---|---|
| 1821 | 2023-12-27 |
| 1822 | 2023-12-28 |
| 1823 | 2023-12-29 |
| 1824 | 2023-12-30 |
| 1825 | 2023-12-31 |
forecast_magdalena = m_magdalena.predict(future_magdalena)
forecast_magdalena[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
| ds | yhat | yhat_lower | yhat_upper | |
|---|---|---|---|---|
| 1821 | 2023-12-27 | 12.180702 | 6.585277 | 17.712521 |
| 1822 | 2023-12-28 | 11.904420 | 6.462685 | 17.098666 |
| 1823 | 2023-12-29 | 12.209052 | 6.892452 | 17.642030 |
| 1824 | 2023-12-30 | 12.703069 | 7.421491 | 18.411602 |
| 1825 | 2023-12-31 | 12.895278 | 7.528842 | 18.397067 |
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_magdalena, forecast_magdalena)
plot_components_plotly(m_magdalena, forecast_magdalena)
fecha_delitos_miguel_hidalgo = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
"MIGUEL HIDALGO"]
fecha_delitos_miguel_hidalgo=fecha_delitos_miguel_hidalgo.drop('alcaldia_hechos', axis=1)
fecha_delitos_miguel_hidalgo.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_miguel_hidalgo.head()
| ds | y | |
|---|---|---|
| 10683 | 2019-01-01 | 47 |
| 10699 | 2019-01-02 | 83 |
| 10715 | 2019-01-03 | 65 |
| 10731 | 2019-01-04 | 71 |
| 10747 | 2019-01-05 | 40 |
m_miguel_hidalgo = Prophet()
m_miguel_hidalgo.fit(fecha_delitos_miguel_hidalgo)
16:16:05 - cmdstanpy - INFO - Chain [1] start processing 16:16:05 - cmdstanpy - INFO - Chain [1] done processing
<prophet.forecaster.Prophet at 0x7fc5822a60e0>
# Hacemos un dataframe de fechas futuras
future_miguel_hidalgo = m_miguel_hidalgo.make_future_dataframe(periods=365)
future_miguel_hidalgo.tail()
| ds | |
|---|---|
| 1821 | 2023-12-27 |
| 1822 | 2023-12-28 |
| 1823 | 2023-12-29 |
| 1824 | 2023-12-30 |
| 1825 | 2023-12-31 |
forecast_miguel_hidalgo = m_miguel_hidalgo.predict(future_miguel_hidalgo)
forecast_miguel_hidalgo[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
| ds | yhat | yhat_lower | yhat_upper | |
|---|---|---|---|---|
| 1821 | 2023-12-27 | 26.431545 | 13.014266 | 38.766292 |
| 1822 | 2023-12-28 | 27.962868 | 16.168889 | 40.973445 |
| 1823 | 2023-12-29 | 28.327244 | 15.997971 | 41.295358 |
| 1824 | 2023-12-30 | 23.429943 | 10.511760 | 37.383735 |
| 1825 | 2023-12-31 | 21.567731 | 9.704525 | 34.775688 |
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_miguel_hidalgo, forecast_miguel_hidalgo)
plot_components_plotly(m_miguel_hidalgo, forecast_miguel_hidalgo)
fecha_delitos_milpa_alta = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
"MILPA ALTA"]
fecha_delitos_milpa_alta=fecha_delitos_milpa_alta.drop('alcaldia_hechos', axis=1)
fecha_delitos_milpa_alta.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_milpa_alta.head()
| ds | y | |
|---|---|---|
| 10684 | 2019-01-01 | 6 |
| 10700 | 2019-01-02 | 8 |
| 10716 | 2019-01-03 | 5 |
| 10732 | 2019-01-04 | 11 |
| 10748 | 2019-01-05 | 8 |
m_milpa_alta = Prophet()
m_milpa_alta.fit(fecha_delitos_milpa_alta)
16:18:24 - cmdstanpy - INFO - Chain [1] start processing 16:18:24 - cmdstanpy - INFO - Chain [1] done processing
<prophet.forecaster.Prophet at 0x7fc576989ed0>
# Hacemos un dataframe de fechas futuras
future_milpa_alta = m_milpa_alta.make_future_dataframe(periods=365)
future_milpa_alta.tail()
| ds | |
|---|---|
| 1814 | 2023-12-27 |
| 1815 | 2023-12-28 |
| 1816 | 2023-12-29 |
| 1817 | 2023-12-30 |
| 1818 | 2023-12-31 |
forecast_milpa_alta= m_milpa_alta.predict(future_miguel_hidalgo)
forecast_milpa_alta[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
| ds | yhat | yhat_lower | yhat_upper | |
|---|---|---|---|---|
| 1821 | 2023-12-27 | 8.090048 | 4.426638 | 11.658834 |
| 1822 | 2023-12-28 | 7.558217 | 4.112735 | 11.378234 |
| 1823 | 2023-12-29 | 7.906802 | 4.058092 | 11.523145 |
| 1824 | 2023-12-30 | 8.055827 | 4.566410 | 11.868624 |
| 1825 | 2023-12-31 | 8.627933 | 5.050630 | 12.217373 |
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_milpa_alta, forecast_milpa_alta)
plot_components_plotly(m_milpa_alta, forecast_milpa_alta)
fecha_delitos_tlahuac = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
"TLAHUAC"]
fecha_delitos_tlahuac=fecha_delitos_tlahuac.drop('alcaldia_hechos', axis=1)
fecha_delitos_tlahuac.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_tlahuac.head()
| ds | y | |
|---|---|---|
| 10685 | 2019-01-01 | 27 |
| 10701 | 2019-01-02 | 21 |
| 10717 | 2019-01-03 | 26 |
| 10733 | 2019-01-04 | 22 |
| 10749 | 2019-01-05 | 21 |
m_tlahuac = Prophet()
m_tlahuac.fit(fecha_delitos_tlahuac)
16:20:31 - cmdstanpy - INFO - Chain [1] start processing 16:20:31 - cmdstanpy - INFO - Chain [1] done processing
<prophet.forecaster.Prophet at 0x7fc57c4ea680>
# Hacemos un dataframe de fechas futuras
future_tlahuac = m_tlahuac.make_future_dataframe(periods=365)
future_tlahuac.tail()
| ds | |
|---|---|
| 1821 | 2023-12-27 |
| 1822 | 2023-12-28 |
| 1823 | 2023-12-29 |
| 1824 | 2023-12-30 |
| 1825 | 2023-12-31 |
forecast_tlahuac= m_tlahuac.predict(future_tlahuac)
forecast_tlahuac[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
| ds | yhat | yhat_lower | yhat_upper | |
|---|---|---|---|---|
| 1821 | 2023-12-27 | 17.249327 | 9.891160 | 24.092005 |
| 1822 | 2023-12-28 | 17.703450 | 9.962424 | 24.474266 |
| 1823 | 2023-12-29 | 17.756054 | 10.586789 | 25.160246 |
| 1824 | 2023-12-30 | 17.967155 | 10.768502 | 25.188595 |
| 1825 | 2023-12-31 | 18.368906 | 11.612108 | 25.440861 |
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_tlahuac, forecast_tlahuac)
plot_components_plotly(m_tlahuac, forecast_tlahuac)
fecha_delitos_tlalpan = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
"TLALPAN"]
fecha_delitos_tlalpan=fecha_delitos_tlalpan.drop('alcaldia_hechos', axis=1)
fecha_delitos_tlalpan.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_tlalpan.head()
| ds | y | |
|---|---|---|
| 10686 | 2019-01-01 | 47 |
| 10702 | 2019-01-02 | 41 |
| 10718 | 2019-01-03 | 40 |
| 10734 | 2019-01-04 | 60 |
| 10750 | 2019-01-05 | 37 |
m_tlalpan = Prophet()
m_tlalpan.fit(fecha_delitos_tlalpan)
16:22:11 - cmdstanpy - INFO - Chain [1] start processing 16:22:11 - cmdstanpy - INFO - Chain [1] done processing
<prophet.forecaster.Prophet at 0x7fc57c419d50>
# Hacemos un dataframe de fechas futuras
future_tlalpan = m_tlalpan.make_future_dataframe(periods=365)
future_tlalpan.tail()
| ds | |
|---|---|
| 1821 | 2023-12-27 |
| 1822 | 2023-12-28 |
| 1823 | 2023-12-29 |
| 1824 | 2023-12-30 |
| 1825 | 2023-12-31 |
forecast_tlalpan= m_tlalpan.predict(future_tlalpan)
forecast_tlalpan[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
| ds | yhat | yhat_lower | yhat_upper | |
|---|---|---|---|---|
| 1821 | 2023-12-27 | 31.946758 | 21.338862 | 42.377480 |
| 1822 | 2023-12-28 | 31.157856 | 20.530608 | 42.062976 |
| 1823 | 2023-12-29 | 32.697090 | 22.589173 | 42.672772 |
| 1824 | 2023-12-30 | 30.979921 | 20.610124 | 41.394078 |
| 1825 | 2023-12-31 | 30.380735 | 19.969065 | 41.774990 |
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_tlalpan, forecast_tlalpan)
plot_components_plotly(m_tlalpan, forecast_tlalpan)
fecha_delitos_venustiano_carranza = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
"VENUSTIANO CARRANZA"]
fecha_delitos_venustiano_carranza=fecha_delitos_venustiano_carranza.drop('alcaldia_hechos', axis=1)
fecha_delitos_venustiano_carranza.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_venustiano_carranza.head()
| ds | y | |
|---|---|---|
| 10687 | 2019-01-01 | 37 |
| 10703 | 2019-01-02 | 41 |
| 10719 | 2019-01-03 | 57 |
| 10735 | 2019-01-04 | 57 |
| 10751 | 2019-01-05 | 55 |
m_venustiano_carranza = Prophet()
m_venustiano_carranza.fit(fecha_delitos_venustiano_carranza)
16:24:28 - cmdstanpy - INFO - Chain [1] start processing 16:24:28 - cmdstanpy - INFO - Chain [1] done processing
<prophet.forecaster.Prophet at 0x7fc57c670be0>
# Hacemos un dataframe de fechas futuras
future_venustiano_carranza = m_venustiano_carranza.make_future_dataframe(periods=365)
future_venustiano_carranza.tail()
| ds | |
|---|---|
| 1821 | 2023-12-27 |
| 1822 | 2023-12-28 |
| 1823 | 2023-12-29 |
| 1824 | 2023-12-30 |
| 1825 | 2023-12-31 |
forecast_venustiano_carranza= m_venustiano_carranza.predict(future_venustiano_carranza)
forecast_venustiano_carranza[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
| ds | yhat | yhat_lower | yhat_upper | |
|---|---|---|---|---|
| 1821 | 2023-12-27 | 29.910790 | 19.270417 | 40.630993 |
| 1822 | 2023-12-28 | 31.553673 | 19.951240 | 41.749591 |
| 1823 | 2023-12-29 | 30.163610 | 19.435259 | 41.786603 |
| 1824 | 2023-12-30 | 28.425478 | 17.780848 | 38.850214 |
| 1825 | 2023-12-31 | 28.145893 | 17.487344 | 38.924056 |
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_venustiano_carranza, forecast_venustiano_carranza)
plot_components_plotly(m_venustiano_carranza, forecast_venustiano_carranza)
fecha_delitos_xochimilco = fecha_delitos_alcaldias.loc[fecha_delitos_alcaldias['alcaldia_hechos'] ==
"XOCHIMILCO"]
fecha_delitos_xochimilco=fecha_delitos_xochimilco.drop('alcaldia_hechos', axis=1)
fecha_delitos_xochimilco.rename(columns = {'FechaHecho':'ds', 'Conteo':'y'}, inplace = True)
fecha_delitos_xochimilco.head()
| ds | y | |
|---|---|---|
| 10688 | 2019-01-01 | 35 |
| 10704 | 2019-01-02 | 28 |
| 10720 | 2019-01-03 | 36 |
| 10736 | 2019-01-04 | 38 |
| 10752 | 2019-01-05 | 26 |
m_xochimilco = Prophet()
m_xochimilco.fit(fecha_delitos_xochimilco)
16:26:51 - cmdstanpy - INFO - Chain [1] start processing 16:26:51 - cmdstanpy - INFO - Chain [1] done processing
<prophet.forecaster.Prophet at 0x7fc57c614280>
# Hacemos un dataframe de fechas futuras
future_xochimilco = m_xochimilco.make_future_dataframe(periods=365)
future_xochimilco.tail()
| ds | |
|---|---|
| 1821 | 2023-12-27 |
| 1822 | 2023-12-28 |
| 1823 | 2023-12-29 |
| 1824 | 2023-12-30 |
| 1825 | 2023-12-31 |
forecast_xochimilco= m_xochimilco.predict(future_xochimilco)
forecast_xochimilco[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
| ds | yhat | yhat_lower | yhat_upper | |
|---|---|---|---|---|
| 1821 | 2023-12-27 | 19.152367 | 11.479859 | 26.211404 |
| 1822 | 2023-12-28 | 18.804598 | 10.913651 | 26.719818 |
| 1823 | 2023-12-29 | 20.276201 | 12.583698 | 28.361415 |
| 1824 | 2023-12-30 | 19.866190 | 12.398988 | 27.149700 |
| 1825 | 2023-12-31 | 20.232435 | 13.124785 | 27.997560 |
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m_xochimilco, forecast_xochimilco)
plot_components_plotly(m_xochimilco, forecast_xochimilco)